package priv.mill.strut;

import java.util.Arrays;

public class DongTaiArray {

	private int index;  //当前数组有效元素的最大下标
	private long[] arr; //内部存储的数组
	private int size; 	//当前数组的长度

	public DongTaiArray(int i) {
		arr=new long[i];
		this.size=i;
		index=-1;
	}
	public void add(long i) {
		int j = ++index;
		if(j==size){//口袋不够了
			extendArr();
		}
//		srot(i);
		this.arr[j]=i;
	}
	private void srot(long i) {
		// 循环index-0。
		// 找到第一个小于i的数

		// 循环从index-找到的数的位置
		// 将符合条件的数往后挪
		// 将i插入到该位置
		
	}
	private void extendArr() {
		//1. 创建一个新数组(新数组的大小是原来数组大小的2倍)
		long[] temp = new long[size*2];
		//2. 更新一下size的值
		//3. 将原来的数组元素拷贝到新数组中来
		for (int i = 0; i < arr.length; i++) {
			temp[i]=arr[i];
		}
		size*=2;
		this.arr=temp;
	}
	
	public void printArray(){
		System.out.println(Arrays.toString(arr));
	}

	public long get(int i){
		if(i>index){
			return -1;
		}
		return arr[i];
	}
	
	public long delete(int i){
		long result = arr[i];//拿到返回结果
		//从前往后进行循环:i-index
		for (int j = i; j <= index; j++) {
			arr[j]=arr[j+1];
		}
		index--;//更新当前索引
		return result;
	}
	
	public void insert(int i,long value){
		if(i>index)add(value);
		//循环index-i 从后往前
		for (int j = index; j >=i ; j--) {
			arr[j+1]=arr[j];
		}
		arr[i]=value;
		index++;
	}
}
